package chapter_3.message.coder;

import chapter_3.message.entity.AbstractMessage;

import java.io.IOException;

/**
 * 消息的序列化与反序列化
 */
public interface MessageCoder {

    /**
     * 根据特定的协议，将给定的消息message序列化为一个字节数组
     * @param message
     * @return 字节数组
     */
    byte[] toWire(AbstractMessage message) throws IOException;

    /**
     * 根据特定的协议，将一个字节数组bytes反序列化为一个AbstractMessage对象
     * @param bytes
     * @return
     */
    AbstractMessage fromWire(byte[] bytes) throws IOException;
}
